<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>

    //deepFreeze : 实现深度冻结的函数
    function deepFreeze(obj) {
        //拿到obj的所有直接属性名组成的数组
        var props = Object.getOwnPropertyNames(obj);
        props.forEach(function(prop){
            //prop : 代表的是一个个obj的直接属性名
            //val : prop对应的属性值
            var val = obj[prop]
            //如果val是一个对象 则继续向内搜索 直到找不到对象属性了
            if(typeof val === "object" && val!==null){
                deepFreeze(val)
            }
        })

        //实现浅冻结的代码
        Object.freeze(obj)
    }
    
    
    var obj = {
        name:"达姆",
        son:"小达姆",
        job:{
            name:"培训老师",
            a:{
                b:{
                    c:{
                        d:"d"
                    }
                }
            }
        }
    }
    //深度冻结(递归)
    deepFreeze(obj)
    

    //修改
    obj.job.a.b.c.d= "dd"

    console.log(obj);
</script>
</html>